
import app.Propiedad;
import database.PropiedadDAO;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.ArrayList;
import java.util.Properties;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//import util.Translator;

/**
 * Servlet implementation class BuscarPropiedad
 */
public class BuscarPropiedad extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	private PropiedadDAO DBProp = null;
	private Connection con = null;

	@Override
	public void init() throws ServletException {
		super.init();
		
        try
        {
            //Leyendo propiedades para la BD
            Properties prop = new Properties();
            ClassLoader loader = this.getClass ().getClassLoader ();
            InputStream in = loader.getResourceAsStream ("database/database.properties");
            prop.load(in);
            in.close();

            String drivers = prop.getProperty("jdbc.drivers");
            if (drivers != null)
                System.setProperty("jdbc.drivers", drivers);

            String url = prop.getProperty("jdbc.url");
            String user = prop.getProperty("jdbc.user");
            String password = prop.getProperty("jdbc.password");

            // Creando conexion
            con = DriverManager.getConnection(url, user, password);
        }
        catch (IOException e)
        {
	       e.printStackTrace();
        }
        catch (SQLException ex)
        {
        	ex.printStackTrace();
        }

        try {
        	DBProp = new PropiedadDAO (con);
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
	}
	
    /**
     * @see HttpServlet#HttpServlet()
     */
    public BuscarPropiedad()
    {
        super();

    }
    
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		ArrayList<Propiedad> listaPropiedades = null;
		ArrayList<String> opciones = new ArrayList<String> ();

        // Criterio por tipo de propiedad
		if (request.getParameter("tipoPropiedad") != null) {
			String tipoPropiedad = request.getParameter ("tipoPropiedad");
			
			if (! tipoPropiedad.equals("0"))
			{
				opciones.add("Tipo inmueble");
				opciones.add(tipoPropiedad);
			}
		}
		
        // Criterio por tipo de oferta de propiedad
		if (request.getParameter("tipoOferta") != null) {
			int tipoOferta = Integer.parseInt (request.getParameter ("tipoOferta"));
			
			switch (tipoOferta) {
			case 1:
				opciones.add ("Tipo oferta");
				opciones.add ("Venta");
				break;
			case 2:
				opciones.add ("Tipo oferta");
				opciones.add ("Alquiler");
			}
		}

        // Criterio por dimensiones de propiedad
		if (request.getParameter ("tipoDimension") != null)
		{
			int tipoDimension = Integer.parseInt(request.getParameter ("tipoDimension"));
		
	        switch (tipoDimension) {
	        // Menor que
	        case 1:
	        	if (request.getParameter ("maxDimension").trim () != "")
	        	{
		        	opciones.add("Dimension maxima");
		            opciones.add(request.getParameter ("maxDimension"));
	        	}
	        	
	            break;
	        // Entre
	        case 2:
	        	if ((request.getParameter ("maxDimension").trim () != "") && (request.getParameter ("minDimension").trim () != ""))
	        	{
		            opciones.add("Dimension entre");
		            opciones.add(request.getParameter ("minDimension"));
		            opciones.add(request.getParameter ("maxDimension"));
	        	}
	        	
	            break;
	        // Mayor que
	        case 3:
	        	if (request.getParameter ("minDimension").trim () != "")
	        	{
		            opciones.add("Dimension minima");
		            opciones.add(request.getParameter ("minDimension"));
	        	}
	        }
		}

        // Criterio por precio de propiedad
		if (request.getParameter ("tipoPrecio") != null)
		{
			int tipoPrecio = Integer.parseInt(request.getParameter ("tipoPrecio"));
	
	        switch (tipoPrecio) {
	        // Menor que
	        case 1:
	        	if (request.getParameter ("maxPrecio").trim () != "")
	        	{
	               	opciones.add ("Precio maximo");
	                opciones.add (request.getParameter ("maxPrecio"));
	        	}
	        	
                break;
	        // Entre
	        case 2:
	        	if ((request.getParameter ("maxPrecio").trim () != "") && (request.getParameter ("minPrecio").trim () != ""))
	        	{
	                opciones.add ("Precio entre");
	                opciones.add (request.getParameter ("minPrecio"));
	                opciones.add (request.getParameter ("maxPrecio"));
	        	}
	        	
                break;
	        // Mayor que
	        case 3:
	        	if (request.getParameter ("minPrecio").trim () != "")
	        	{
	                opciones.add ("Precio minimo");
	                opciones.add (request.getParameter ("minPrecio"));
	        	}
	        }
		}
		
        if (request.getParameter("id") != null) {
        	opciones.add("id");
        	opciones.add(request.getParameter("id"));
        }
        
        if (request.getParameter ("usuario") != null)
        {
        	opciones.add("Usuario");
        	opciones.add(request.getParameter ("usuario"));
        }
        
		listaPropiedades = DBProp.listar (opciones);

    	request.setAttribute("listaProps", listaPropiedades);
   		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/listProperties.jsp");
   		dispatcher.include(request, response);

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}
